home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / batchut / bgecho.zip / BIGECHO.ASM < prev    next >
Assembly Source File  |  1986-09-12  |  2KB  |  89 lines

  1. cseg segment
  2.          assume cs:cseg , ds:cseg
  3.          org 100H
  4. enter:jmp begin
  5. ;---------------------------
  6. db 13,'BIGECHO, Vers. 1.0 copyright by R.M.Wilson and B. Simon, 1986',10,13
  7. db 'Usage: BIGECHO message /FB',10,13
  8. db "Here 'message' is a string of at most 10 characters,"
  9. db ' F and B are characters',10,13
  10. db 'for the foreground and background'
  11. db ' (defaults to blank and solid, i.e. / █ ).',26
  12.  
  13. foreback db  0DBH,20H
  14. hold db 80 dup(0)  ;Will hold the 8 bytes describing each of 10 characters.
  15. ;---------------------------
  16. begin:   mov si,80H  ;First, get characters for use as fore and background. 
  17.          lodsb
  18.          or al,al
  19.          jne lod1
  20.          ret
  21.       lod1:lodsb
  22.          cmp al,0DH
  23.          je over1
  24.          cmp al,'/'
  25.          jne lod1
  26.          lodsb
  27.          mov foreback,al
  28.          lodsb
  29.          cmp al,13
  30.          je over1
  31.          mov foreback[1],al
  32.       over1:mov si,0FA6EH    ;Point ds:si to table in ROM with dot 
  33.          mov ax,0F000H       ;patterns for ASCII characters 0 through 127.
  34.          mov ds,ax   
  35.          mov di,offset hold
  36.          mov bx,82H
  37.  
  38. form:    mov al,cs:[bx]      ;Load byte of message.
  39.          cmp al,0DH
  40.          je go_on
  41.          cmp al,'/'
  42.          je go_on
  43.          xor ah,ah
  44.          shl ax,1
  45.          shl ax,1
  46.          shl ax,1
  47.          push si
  48.          add si,ax
  49.          mov cx,8
  50.          rep movsb           ;Get 8 bytes from ROM.
  51.          pop si
  52.          inc bx
  53.          cmp bx,8CH
  54.          jl form
  55.  
  56.          go_on:push cs
  57.          pop ds
  58.  
  59. output:  mov ah,2     ;We'll be using Service 2 of DOS.
  60.          xor bp,bp
  61.          loop1:mov si, offset hold
  62.          add si,bp
  63.                mov cx,10
  64.                loop2:lodsb
  65.                        mov bl,80H  ;8 bytes
  66.                        loop3:push ax
  67.                        mov dl,foreback[1]
  68.                        and al,bl
  69.                        jz over4
  70.                        mov dl,foreback[0]
  71.                        over4:int 21H
  72.                        ror bl,1
  73.                        pop ax
  74.                        cmp bl,80H
  75.                        jne loop3
  76.                add si,7
  77.                loop loop2
  78.          inc bp
  79.          cmp bp,8
  80.          jl loop1
  81. return:  ret
  82. ;-----------------------------------------------
  83. cseg ends
  84. end enter
  85.          
  86.  
  87.           
  88.  
  89.